﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Mvc;
using Vowei.Core.Models;
using System.Web;

namespace Vowei.Web.Models
{
    public interface IWizardStep
    {
        object State { get; set; }

        ActionResult Result { get; set; }

        IWizardStep Next();
    }

    public interface IWizardController
    {
        HttpRequestBase Request { get; }

        HttpResponseBase Response { get; }

        HttpSessionStateBase Session { get; }

        ViewDataDictionary ViewData { get; }

        ViewResult View(string viewName, string masterName, object model);

        RedirectToRouteResult RedirectToAction(string actionName, string controllerName, object routeValues);
    }
    
    public interface IWizardStepState
    {
        IWizardController Owner { get; set; }

        IVoweiContext DataContext { get; set; }

        IUser CurrentUser { get; set; }

        object AdditionalState { get; set; }
    }

    public interface IWizardStep2
    {
        IWizardStep2 PreviousStep { get; set; }

        IWizardStep2 NextStep { get; set; }
        
        ActionResult Result { get; set; }

        void Do(IWizardStepState state);
    }
}
